/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.acionista.converter;

import br.jm.acionista.filter.Funcoes;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

/**
 *
 * @author joao
 */
public class MascaraConverter implements Converter {

    private static final String LIMIT_PARAMETER_NAME = "tipo";
    private static final String DEFAULT_LIMIT = "T";
    private Funcoes funcoes = new Funcoes();

    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        String cTipo = getTipoAttribute(component);
        String cRetorno = null;

        if (value != null) {
            if (cTipo.equals("T")) {
                cRetorno = funcoes.getValueMaskFormat("(##) ####-####", value, false);
            } else if (cTipo.equals("F")) {
                cRetorno = funcoes.FormataCPFCNPF(value, cTipo);
            } else if (cTipo.equals("J")) {
                cRetorno = funcoes.FormataCPFCNPF(value, cTipo);
            }
            return cRetorno;
        }
        return null;
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        String cTipo = getTipoAttribute(component);
        String cRetorno = null;

        if (value == null) {
            return "";
        }
        if (cTipo.equals("T")) {
            cRetorno = funcoes.getValueMaskFormat("(##) ####-####", value.toString(), false);
        } else if (cTipo.equals("F")) {
            cRetorno = funcoes.FormataCPFCNPF(value.toString(), cTipo);
        } else if (cTipo.equals("J")) {
            cRetorno = funcoes.FormataCPFCNPF(value.toString(), cTipo);
        }
        return cRetorno;

    }

    private String getTipoAttribute(UIComponent component) {
        Object att = component.getAttributes().get(LIMIT_PARAMETER_NAME);
        if (att == null) {
            return DEFAULT_LIMIT;
        } else {
            return (String) component.getAttributes().get(LIMIT_PARAMETER_NAME);
        }
    }

    private String limit(String s, String limit) {
        String limited = s;
        return limited;
    }
}
